package com.InterestingExercises;

import java.util.Scanner;

public class 冒泡排序与选择排序 {


    public static void main(String[] args) {
        /**
         * 千里之行,始于足下
         * I must write something interesting here~
         */
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入数组长度:");
        int temp = sc.nextInt();
        int[] arr = new int[temp];

        System.out.println("请输入" + temp + "个整数:");
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        System.out.println("输入的数组为:");
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
        arraySorting(arr);

    }

    //在主方法中通过键盘录入三个整数。定义一个方法，方法接收三个整数变量，在方法中从大到小依次打印三个变量。
    public static void arraySorting(int[] arr) {
        //使用冒泡排序实现,每一趟将当前最小的移动到最右边
        /*for (int i = 1; i <= arr.length - 1; i++) {//每次确定一个当前最小值,共arr.length-1趟
            for (int j = 0, temp; j <= arr.length - 1 - i; j++) {
                if (arr[j] < arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }*/

        //使用选择排序实现,每一趟选择当前最大的放到左边
        for (int i = 0; i < arr.length - 1; i++) {//每次确定一个当前最大值,共arr.length-1趟
            int maxIndex = i;//假定arr[i]就是这一趟最大的
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] > arr[maxIndex]) {
                    maxIndex = j;
                }
            }
            int temp;
            if (maxIndex != i) {
                temp = arr[i];
                arr[i] = arr[maxIndex];
                arr[maxIndex] = temp;
            }
        }

        System.out.println("从大到小依次为:");
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
        }
        System.out.println("]");
    }

}

/*
请输入数组长度:5
请输入5个整数:
2 3 1 4 5
输入的数组为:
[2, 3, 1, 4, 5]
从大到小依次为:
[5, 4, 3, 2, 1]

请输入数组长度:10
请输入10个整数:
1 2 3 4 5 6 7 8 9 10
输入的数组为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
从大到小依次为:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
*/

